package com.dsprun.dspai.dto;

import jakarta.validation.constraints.Max;
import jakarta.validation.constraints.Min;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.Size;
import lombok.Data;
import java.util.List;

/**
 * 代码生成请求参数
 */
@Data
public class CodeGenerationRequest {
    /**
     * 功能描述（必填）
     * @example "实现一个快速排序算法"
     */
    @NotBlank(message = "功能描述不能为空")
    @Size(max = 1000, message = "描述长度不能超过1000个字符")
    private String description;

    /**
     * 目标编程语言（必填）
     * @example "java", "python"
     */
    @NotBlank(message = "编程语言不能为空")
    private String language;

    /**
     * 代码风格选项
     * @example "functional", "OOP", "procedural"
     */
    private String style = "OOP";

    /**
     * 是否需要添加注释
     */
    private boolean includeComments = true;

    /**
     * 需要使用的库/框架
     * @example ["spring-boot", "lombok"]
     */
    private List<String> libraries;

    /**
     * 代码复杂度级别
     */
    @Min(1) @Max(5)
    private int complexityLevel = 3;

    /**
     * 是否包含单元测试
     */
    private boolean includeTests = false;
}